package org.convallaria.framework.security.annotation;

import java.lang.annotation.*;

/**
 * 角色认证注解
 * 用于标记需要特定角色才能访问的方法或类
 * 
 * @author convallaria
 * @since 1.0.0
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface RequiresRoles {
    
    /**
     * 需要的角色列表
     */
    String[] value();
    
    /**
     * 角色逻辑关系
     */
    Logical logical() default Logical.AND;
    
    /**
     * 角色逻辑枚举
     */
    enum Logical {
        /**
         * 必须拥有所有角色
         */
        AND,
        
        /**
         * 只需拥有其中一个角色
         */
        OR
    }
}
